package com.jiepos.mpos.core.util;

import java.io.File;
import java.net.URISyntaxException;
import java.util.HashMap;
import java.util.Iterator;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import net.sf.json.JSONObject;
/**
 * 
 * <p>标题: —— 系统公用参数读取类</p>
 * <p>模块: 通用平台</p>
 * <p>版权: Copyright (c) 2017 江苏杰博实信息技术有限公司
 * @author 娄伟峰
 * @version 1.0
 * @since 2017年9月11日 下午2:26:09
 * @history（历次修订内容、修订人、修订时间等）
 */
public class GlobalUtils {
	/**
	 * 日志
	 */
	public static final Logger log = LoggerFactory.getLogger(GlobalUtils.class);
	private static PropertiesUtil propertiesUtil = null;
	static{
		propertiesUtil = new PropertiesUtil(new String[]{"conf.properties"});
	}
	
 
	/**
	 * 
	  * @method :getAppPath
	  * @description: 获取系统应用物理路径
	  * @return String 返回应用物理路径
	 */
	/**
	 * 
	 * @method :getAppClassPath
	 * @description: 获取系统CLASSPATH物理路径
	 * @return String 返回CLASSPATH物理路径
	 */
	public static String getAppClassPath() {
	    String path = null;
			try {
				path = PropertiesUtil.class.getProtectionDomain().getCodeSource().getLocation().toURI().getPath();
			} catch (URISyntaxException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
		    if("\\".equals(File.separator)){ 
				try {
					return PropertiesUtil.class.getClassLoader().getResource("//").toURI().getPath();
				} catch (URISyntaxException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			
		    }
		    
		    return path;
	}

	/**
	 * 
	 * @method :getAppPath
	 * @description: 获取系统应用物理路径
	 * @return String 返回应用物理路径
	 */
	public static String getAppPath() {
		String appPath = System.getProperty("com.jiepos.mpos");
		log.info("appPath===============" + appPath);
		return appPath;
	}
	
	
	/**
	 * 获取系统应用名
	 * @return
	 */
	/**
	 * 获取系统应用名
	 * 
	 * @return
	 */
	public static String getAppName() {
		String appPath = getAppPath();
		String str[] = null;
		if("\\".equals(File.separator)){   
			appPath = appPath.replaceAll("\\\\", "/");
		    str = appPath.split("/");
		   
		}if("/".equals(File.separator)){   
			appPath = appPath.replace("\\", "/");
		    str = appPath.split("/");
		   }
		String appName = str[str != null ? str.length - 1 : 0];
	//	log.info("appName===============" + appName);
		return appName;
	}
	

	/**
	 * 
	  * <p>方法说明：获取config.properties文件里面属性值</p> 
	  * <p>作者: 娄伟峰</p>
	  * @param property
	  * @return String
	 */
	public static String getConfProperty(String property) {
		return propertiesUtil.getProperty(property);
	}
	/**
	 * 
	  * <p>方法说明：获取支付系统config.properties文件里面属性值</p> 
	  * <p>作者: 娄伟峰</p>
	  * @param property
	  * @return String
	 */
	public static String getPayConfProperty(String property) {
		return propertiesUtil.getProperty(property);
	}
	
	 /**
     * 将json格式的字符串解析成Map对象 <li>
     * json格式：{"name":"admin","retries":"3fff","testname"
     * :"ddd","testretries":"fffffffff"}
     */
    public static HashMap<String, String> toHashMap(Object object){
        HashMap<String, String> data = new HashMap<String, String>();
        if(object != null && !StringUtils.isBlank(String.valueOf(object))){
        	   // 将json字符串转换成jsonObject
            JSONObject jsonObject = JSONObject.fromObject(object);
            Iterator it = jsonObject.keys();
            // 遍历jsonObject数据，添加到Map对象
            while (it.hasNext()){
                String key = String.valueOf(it.next());
                String value = String.valueOf(jsonObject.get(key));
                data.put(key, value);
            }
        }
     
        return data;
    }
}
